/**
 Copyright (C) 2013 Yuyao Liang

 This source code is release under the BSD License.

 This program is distributed in the hope that it will be useful, but WITHOUT
 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 FOR A PARTICULAR PURPOSE.  See the license for more details.

 Created on Oct 31, 2013 2:49:20 PM
 */
package com.googlecode.backtest.controller;

import java.util.List;

import com.google.srclib.base.IDable;
import com.google.srclib.base.Versionable;
import com.googlecode.backtest.dataset.manager.IDataManager;
import com.googlecode.backtest.dataset.provider.IDataProvider;
import com.googlecode.backtest.rule.IAlgorithm;
import com.googlecode.backtest.rule.queue.IAlgorithmQueue;

/**
 * @author lianyuy
 * 
 */
public interface IBackTestController<T, S, V> extends IDable, Versionable {

	T runAlgorithm(Class<IAlgorithm<T, S>> algorithmclass,
			IConstructorArguments arguments, List<String> dataids, S parameter);

	T runAlgorithmQueue(Class<IAlgorithmQueue<T, S, V>> algorithmqueueclass,
			List<String> dataids, S parameter);

	IDataProvider<T> getProvider();

	IDataManager getManager();

	void start();
}
